home *** CD-ROM | disk | FTP | other *** search
- #! /bin/sh
-
- ARCH="$(dpkg --print-architecture)"
- SUBARCH="$(archdetect)"
- SUBARCH="${SUBARCH#*/}"
- CPUINFO=/proc/cpuinfo
- UNAME_R="$(uname -r)"
- KERNEL_MAJOR="$(echo "$UNAME_R" | cut -d . -f 1,2)"
- KERNEL_VERSION="$(echo "$UNAME_R" | cut -d - -f 1)"
- KERNEL_ABI="$(echo "$UNAME_R" | cut -d - -f 1,2)"
- MACHINE="$(uname -m)"
- NUMCPUS=
- MEMTOTAL=0
- if [ -x /usr/lib/base-installer/dmi-available-memory ]; then
- MEMTOTAL="$(/usr/lib/base-installer/dmi-available-memory)"
- fi
- if [ "$MEMTOTAL" = 0 ]; then
- MEMTOTAL="$(grep '^MemTotal:[[:space:]]*' /proc/meminfo | \
- sed 's/^MemTotal:[[:space:]]*//; s/ .*//')"
- fi
-
- if [ -f /usr/lib/ubiquity/base-installer/kernel.sh ]; then
- . /usr/lib/ubiquity/base-installer/kernel.sh
- else
- exit 0
- fi
-
- kernels="$(dpkg-query -f '${status} ${package}\n' -W linux-image-\* | \
- grep '^install ok installed ' | cut -d' ' -f4 | xargs)"
-
- flavour="$(arch_get_kernel_flavour || true)"
- preferred_kernels="$(arch_get_kernel "$flavour")"
- install_new=
- compatible=
- incompatible=
-
- # TODO cjwatson 2009-10-19: Nasty hack for PAE-capable systems; see
- # https://launchpad.net/bugs/413135. We should generalise this somehow.
- case $preferred_kernels in
- linux-generic-pae*)
- if [ "$(apt-cache search -n '^linux-generic-pae$')" ]; then
- install_new="${install_new:+$install_new }linux-generic-pae"
- for kernel in $kernels; do
- case $kernel in
- *-generic-pae)
- compatible="${compatible:+$compatible }$kernel"
- ;;
- *)
- incompatible="${incompatible:+$incompatible }$kernel"
- ;;
- esac
- done
- fi
- ;;
- esac
-
- if [ -z "$compatible" ] && [ -z "$install_new" ]; then
- for kernel in $kernels; do
- if arch_check_usable_kernel "$kernel" "$flavour"; then
- compatible="${compatible:+$compatible }$kernel"
- else
- if [ "${kernel%-$UNAME_R}" != "$kernel" ]; then
- echo 'Would try to remove running kernel;' \
- 'bailing out for sanity' >&2
- exit 0
- fi
- incompatible="${incompatible:+$incompatible }$kernel"
- fi
- done
- fi
-
- kernel_to_headers () {
- echo "$1" | sed 's/linux\(-image\|\)/linux-headers/'
- }
-
- if [ -z "$compatible" ] && [ -z "$install_new" ]; then
- # We must be wrong. After all, we got this far ...
- echo 'No usable kernel found; assuming foreign package naming' >&2
- else
- mkdir -p /var/lib/ubiquity
- for kernel in $install_new; do
- echo "$kernel" >>/var/lib/ubiquity/install-kernels
- kernel_to_headers "$kernel" >>/var/lib/ubiquity/install-kernels
- done
- for kernel in $compatible; do
- apt-install "$kernel" "$(kernel_to_headers "$kernel")"
- done
- for kernel in $incompatible; do
- echo "$kernel" >> /var/lib/ubiquity/remove-kernels
- kernel_to_headers "$kernel" >>/var/lib/ubiquity/remove-kernels
- done
- fi
-
- exit 0
-